; Test conditional instructions.

; Select with scalar values.
define i32 @test_select0(i1 %sel, i32 %x, i32 %y) 
{
        %a1 = select i1 %sel, i32 %x, i32 %y

        ret i32 %a1
}

; Select with scalar values.
define i32 @test_select1(i32 %x, i32 %y) 
{
        %c1 = icmp ne i32 %x, 0
        %a1 = select i1 %c1, i32 %x, i32 %y

        ret i32 %a1
}


; Compare with vector values.
define <2 x i1> @test_select2(<2 x i1> %sel, <2 x i8> %x, <2 x i8> %y) 
{
        %a1 = icmp ne <2 x i8> %x, %y
        ret <2 x i1> %a1
}

define <2 x i8> @test_select3(<2 x i1> %sel, <2 x i8> %x, <2 x i8> %y) 
{
        %a1 = select <2 x i1> %sel, <2 x i8> %x, <2 x i8> %y
        ret <2 x i8> %a1
}

; Select with vector values.
define <2 x i8> @test_select4(<2 x i8> %x, <2 x i8> %y) 
{
        %c1 = icmp ne <2 x i8> %x, %y
        %a1 = select <2 x i1> %c1, <2 x i8> %x, <2 x i8> %y
        ret <2 x i8> %a1
}

define i32 @uncond_goto(i32 %x, i32 %y) 
{
     br label %flabel

     tlabel:
        ret i32 2

     flabel:
        ret i32 3
}

define i32 @cond_goto(i32 %x, i32 %y) 
{
        %c1 = icmp eq i32 %x, %y
        br i1 %c1, label %tlabel, label %flabel

     tlabel:
        ret i32 2

     flabel:
        ret i32 3
}

define i32 @switch_test2(i32 %x)
{
     switch i32 %x, label %default []

     default:
        ret i32 10
}

define i32 @switch_test1(i32 %x, i32 %y)
{
     %c1 = icmp eq i32 %x, %y

     switch i1 %c1, label %default [i1 0, label %flabel i1 1, label %tlabel]

     tlabel:
        ret i32 2

     flabel:
        ret i32 3

     default:
        ret i32 10
}



